package com.dimples.system.service;

import com.dimples.common.entity.SecurityUser;
import com.dimples.common.page.metadata.Page;
import com.dimples.common.transport.QueryRequest;
import com.dimples.system.entity.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dimples.system.vo.UserVO;

/**
 * @author zhongyj <1126834403@qq.com><br/>
 * @date 2021/7/18
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 查询用户
     *
     * @param sysUser      SysUser
     * @param queryRequest QueryRequest
     * @return Page<SysUser>
     */
    Page<SysUser> findUser(SysUser sysUser, QueryRequest queryRequest);

    /**
     * 新增用户
     *
     * @param sysUser SysUser
     */
    void saveUser(SysUser sysUser);

    /**
     * 编辑用户
     *
     * @param sysUser SysUser
     */
    void updateUser(SysUser sysUser);

    /**
     * 删除用户
     *
     * @param userId Long
     */
    void deleteUser(Long userId);

    /**
     * 批量删除用户
     *
     * @param userIds String
     */
    void deleteUsers(String userIds);

    /**
     * 获取用户详情
     *
     * @param userId Long
     * @return UserVO
     */
    UserVO getUser(Long userId);

    /**
     * 修改用户密码
     *
     * @param oldPassword String
     * @param newPassword String
     */
    void updateUserPassword(String oldPassword, String newPassword);

    /**
     * 修改用户头像
     *
     * @param avatarId String
     * @return SecurityUser
     */
    SecurityUser updateUserAvatar(String avatarId);

    /**
     * 根据用户名查询用户
     *
     * @param username String
     * @return SysUser
     */
    SysUser findByName(String username);

    /**
     * 注册新用户
     *
     * @param username String
     * @param password String
     */
    void register(String username, String password);
}
